package com.googlecode.flair
{
	import flash.utils.Dictionary;
	
	import mx.collections.ArrayCollection;
	
	public interface IFlairComponent
	{
		
		function get componentId() : String;
		
		function set componentId(id : String) : void;
		
		function get icon() : Class;
		
		function set icon(icon : Class) : void;
		
		function get parentComponent() : IFlairComponent;
		
		function set parentComponent(parent : IFlairComponent ) : void;
		
		function get component() : Object;
		
		function get components() : ArrayCollection;
		
		function get componentName() : String;
		
		function duplicate () : IFlairComponent;
		
		function removeFromParent() : IFlairComponent;
		
		function remove(component : IFlairComponent) : IFlairComponent;
		
		function add(component : IFlairComponent, index : int = -1) : void;
		
		function addToParent(index : int = -1) : void;
		
		function get editedProperties() : Dictionary;
		
		function get editedStyles() : Dictionary;
		
		function get editedElements() : Dictionary;
		
		function putValue(property : String, value : Object) : Object;
		
		function putValues(properties : Array, values : Array) : void;
		
		function getArrayValue(property : Object, index : Number) : Object;
		
		function getValue(property : String) : Object;
		
		function select() : void;
		
	}
}